package com.boot2.core.dao.batch.insert;

import java.util.List;

/**
 * @author zhangweilin
 * @Description: xxxxx
 * @date 2020/8/15
 */
public interface BatchCommitData {

    /**
     * 初始化操作，比如内容容器
     * @param key
     */
    <T> void init(final String key);

    /**
     * 预提交
     *
     * @param key
     * @param t
     */
    <T> void preCommit(final String key, T t);

    /**
     * 从队列取数据
     */
    <T> T poll(final String key);

    /**
     * 从队列取数据
     */
    <T> List<T> pollList(final String key, int size);

    /**
     * 是否为空
     *
     * @return
     */
    boolean isEmpty(final String key);

    /**
     * 获取队列长度
     * @param key
     * @return
     */
    Long size(final String key);


}
